1. Technical Field
One or more embodiments of the present invention generally relate to power management. In particular, certain embodiments relate to coordinating power management activities in multi-core processors.
2. Discussion
As the trend toward advanced processors with more transistors and higher frequencies continues to grow, computer designers and manufacturers are often faced with corresponding increases in power consumption. Furthermore, manufacturing technologies that provide faster and smaller components can at the same time result in increased leakage power. Particularly in mobile computing environments, increased power consumption can lead to overheating, which may negatively affect performance, and can significantly reduce battery life.
Some modern mobile computing systems address the concern over reduced battery life by implementing processor-based power management schemes. For example, one of the more popular approaches is to dynamically lower processor power consumption by scaling down the core voltage and clock frequency of the processor when high performance is not needed or desired. Power management can also be enhanced by scaling the frequency of the bus that the processor uses to communicate with other components such as chipsets, memory subsystems, input/output (I/O) devices, etc. Another approach is to switch, or “gate”, the clock to the processor on and off (i.e., “throttle” the clock) to achieve power savings. Yet another example of processor-based power management is to throttle architectural components of the processor such as internal arrays, execution units, and so on. Some techniques make use of various combinations of these approaches to further reduce power consumption. While these power management schemes have been acceptable under certain circumstances, a number of concerns remain.
One concern relates to recent trends toward more complex processor architectures, which can include multiple processors in a system, with multiple cores on each processor. In such a case, some of the power-related resources and associated controls may be shared among processor cores, where other resources and controls may be dedicated to a given core. The dedicated resources and controls are independent from the resources and controls of other cores, where the shared resources and controls depend upon the state of each of the cores. Conventional power management schemes, however, may not work well in these cases because they are structured for single-processor environments.
For example, one such scheme controls transitions of the processor between various power states at the operating system (OS) level. Although future OS implementations may be able to manage power on a per core basis, it is not at all clear whether the OS will be able to coordinate between the cores. Furthermore, even if OS implementations were to achieve per core power management, efficiency may still be an issue of concern. In particular, the OS may not be aware of all of the available performance/power control mechanisms and may not be able to balance the trade-offs between them. In addition, relying on software to coordinate such complicated architectures could increase OS overhead and contribute to software calculation complexity. Software-based power management of multi-core processors may also be difficult to implement from a timing standpoint because of the rapid state changes that can occur in inter-dependent cores.